vector<int> as(int n){ //埃式筛 
	vector<int> fl(n+10),ans;
	for(int i=2;i<=n;i++){
		if(!fl[i]) ans.push_back(i);
		for(int j=i;j*i<=n;j++){
			fl[j*i]=1;
		}
	}
	return ans;
}
vector<int> ol(int n){ //欧拉筛 
	vector<int> fl(n+10),ans;
	for(int i=2;i<=n;i++){
		if(!fl[i]) ans.push_back(i);
		for(int j=0;j<ans.size()&&i*ans[j]<=n;j++){
			fl[i*ans[j]]=1;
			if(i%ans[j]==0){
				break;
			}
		}
	}
	return ans;
}